import re

from rest_framework import serializers

from apps.users.models import User


class UserSerializer(serializers.ModelSerializer):
    '''
        管理员表序列化器
    '''

    class Meta:
        model = User
        fields = '__all__'
        # 给字段添加其他参数
        extra_keargs = {
            'password':{
                'write_only': True, # 密码字段只参加反序列化过程
                'max_length': 20,
                'min_length': 8
            },
            'username':{
                'max_length': 20,
                'min_length': 5
            }
        }

    # 手机号格式验证, 单一字段验证
    def validated_mobile(self, mobile):
        if not re.match(r'^1[3-9]\d{9}$', mobile):
            raise serializers.ValidationError('请输入正确的手机号码')
        return mobile

    # 重写create方法, 对密码进行加密
    def create(self, validated_data):
        # # 调用父类获取保存后对象
        admin = super().create(validated_data)
        # 用户对象使用密码加密方法进行加密
        admin.set_password(validated_data['password'])
        admin.is_staff=True
        admin.save()
        return admin